// import WxRequest from './request'
import WxRequest from 'mina-request'
import { getStorage, clearStorage } from './storage'
import { modal, toast } from './extendApi'
import { env } from './env'

//实例化
const instance = new WxRequest({
	// baseURL: 'https://gmall-prod.atguigu.cn/mall-api',
	baseURL: env.baseUrl,
	timeout: 15000,
	// isLoading: false
})

//配置请求拦截器
instance.interceptors.request = (config) => {
	//在发送请求之前,先判断本地是否存在访问令牌token
	const token = getStorage('token')

	//如果存在,须在请求头中添加token字段
	if (token) {
		config.header['token'] = token
	}

	return config
}

//配置响应拦截器
instance.interceptors.response = async (response) => {
	//从response中解构isSuccess以判断响应以后执行的是哪个回调函数
	const { isSuccess, data } = response

	//在执行fail回调函数时,给用户提示
	if (!isSuccess) {
		wx.showToast({
			title: '网络异常请重试',
			icon: 'error'
		})
		return response
	}

	//判断服务器响应的业务状态码
	switch (data.code) {
		case 200:
			//从response中解构data以简化响应为成功的返回值
			return data

		//没有token或token失效,须让用户登录或者重新登录
		case 208:
			const res = await modal({
				content: '鉴权失败，请重新登录',
				showCancel: false//不显示取消按钮
			})

			if (res) {
				//清除之前失效的token,同时清除本地存储的全部信息
				clearStorage()

				wx.navigateTo({
					url: '/pages/login/login',
				})
			}

			return Promise.reject(response)

		default:
			toast({
				title: '程序出现异常，请联系客服或稍后重试'
			})

			return Promise.reject(response)
	}
}

export default instance